#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include "Bonus.h"



/**
 * \fn void initBonus(Bonus *pBonus)
 * \brief Initialise les bonus en leur attribuant un type et leurs coordonnées
 * \param [in,out] pBonus Bonus initialisé et prêt à être affiché
 */

void initBonus(Bonus *pBonus)
{
    srand ( time(NULL) );
    pBonus->x=(rand() % 38 + 1); /* 38 est l'abscisse maximum du terrain "jouable" (sans les murs)*/
    pBonus->y=(rand() % 28 + 1); /* 28 est l'ordonnée maximum du terrain "jouable" (sans les murs) */
    pBonus->typeBonus=rand()%3; /* On a 3 bonus differents possible */
}



/**
 * \fn void snakeBonus(Snake *pSnake1, Snake *pSnake2, Bonus *pBonus)
 * \brief fonction définissant l'action à réaliser en fonction du bonus ramassé
 * \param [in,out] pBonus Bonus dont l'action va être effectuée
 * \param [in] pSnake1 Snake du jeu
 * \param [in] pSnake2 Snake du jeu
 */
void snakeBonus(Snake *pSnake, Bonus *pBonus, Terrain *pTerrain)
{
    switch(pBonus->typeBonus)
    {
        case 0 :
        /*faire accélérer le snake*/
        pSnake->vitesse = pSnake->vitesse * 2;
        case 1 :
        /*faire freiner le snake*/
        pSnake->vitesse = pSnake->vitesse / 2;
        case 2 :
        /*faire rafraichir la fenêtre*/
        terrainInit(pTerrain);
    }
}



/**
 * \fn void getBonusX(Bonus *pBonus)
 * \brief retourne l'abscisse x du bonus passé en paramètre
 * \param [in,out] pBonus Bonus dont on veut récupérer l'abscisse
 */

int getBonusX(const Bonus *pBonus)
{
   return pBonus->x;
}


/**
 * \fn void getBonusY(Bonus *pBonus)
 * \brief retourne l'ordonnée y du bonus passé en paramètre
 * \param [in,out] pBonus Bonus dont on veut récupérer l'ordonnée
 */

int getBonusY(const Bonus *pBonus)
{
   return pBonus->y;
}
